#region Copyright Jonathan Quiros

//	
// All rights are reserved. Reproduction or transmission in whole or in 
// part, in any form or by any means, electronic, mechanical or otherwise, 
// is prohibited without the prior written consent of the copyright owner.
//
// Filename: IEmailSender.cs
//

#endregion

using System;
using System.Collections.Generic;

namespace Novagoal.Utils
{
    public interface IEmailSender : IDisposable
    {
        /// <summary>
        /// Sends an email.
        /// </summary>
        /// <param name="credential">The <see cref="MailCredential"/> credential.</param>
        /// <param name="toEmail"> A <c>System.String</c> that contains the addresses of the recipients of the e-mail message.</param>
        /// <param name="subject">The subject.</param>
        /// <param name="html">The HTML as a string.</param>
        void SendEmail(MailCredential credential, string toEmail, string subject, string html);

        /// <summary>
        /// Sends an email.
        /// </summary>
        /// <param name="givenCredential">The given <see cref="MailCredential"/> credential.</param>
        /// <param name="toEmail"> A <c>System.String</c> that contains the addresses of the recipients of the e-mail message.</param>
        /// <param name="subject">The subject.</param>
        /// <param name="html">The HTML as string.</param>
        /// <param name="attachments">The attachment collection.</param>
        void SendEmail(MailCredential givenCredential, string toEmail, string subject, string html,
                       IEnumerable<string> attachments);

        /// <summary>
        /// Sends an email
        /// </summary>
        /// <param name="givenCredential">The given <see cref="MailCredential"/> credential.</param>
        /// <param name="toEmails"> A <c>System.String</c> that contains the addresses of the recipients of the e-mail message.</param>
        /// <param name="carbonCopyEmails"> A <c>System.String</c> that contains the addresses of the recipients to send a copy of the e-mail message.</param>
        /// <param name="blindCarbonCopyEmails"> A <c>System.String</c> that contains the addresses of the recipients to send a blind copy of the e-mail message.</param>
        /// <param name="subject">The subject.</param>
        /// <param name="html">The HTML as string.</param>
        /// <param name="attachments">The attachment collection.</param>
        void SendEmail(MailCredential givenCredential, string toEmails, string carbonCopyEmails,
                       string blindCarbonCopyEmails, string subject, string html, IEnumerable<string> attachments);

        /// <summary>
        /// Sends an email.
        /// </summary>
        /// <param name="givenCredential">The given <see cref="MailCredential"/> credential.</param>
        /// <param name="emailTask"> The given <see cref="EmailTask"/> object with all email properties.</param>
        void SendEmail(MailCredential givenCredential, EmailTask emailTask);
    }
}